Passed
Push — develop ( e93b74...bfb867 )
by Endre
07:48
created

Application.onModuleLoaded   A

Complexity

Conditions 1

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 3
dl 0
loc 3
ccs 1
cts 1
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
import React from 'react';
2
import {ILanguageSetup} from '../Language/ChangeLanguageSetup';
3
import {IPageData} from '../Router/Router';
4
import Container from './Container';
5
import ModuleLoader from './ModuleLoader';
6
import ApplicationView, {IAdapter as IViewAdapter} from './View/Application';
7
import Model from './View/Application/Model';
8
9
interface IProperties {
10
}
11
12
interface IState {
13
  loadedLanguage: string,
14
  menuOpen: boolean,
15
  loadedPage: typeof React.Component | null,
16
  shownPage: string
17
}
18
19
export interface IModulePageData extends IPageData {
20
  module: string
21
}
22
23
export interface IAdapter extends IViewAdapter {
24
  onPageChanged(oldValue: IPageData, newValue: IPageData): void;
25
}
26
27
export default class Application extends React.Component<IProperties, IState> {
28
  adapter: IAdapter;
29
  moduleLoader: ModuleLoader;
30
31
  constructor(props: IProperties) {
32 4
    super(props);
33
34 4
    this.state = {
35
      loadedLanguage: Container.language.observer.value.languageCode,
36
      menuOpen: Container.menuOpenState.value,
37
      loadedPage: null,
38
      shownPage: ''
39
    };
40 4
    this.adapter = Container.applicationActionAdapter;
41 4
    this.moduleLoader = Container.moduleLoader;
42
43 4
    Container.language.adapter.addListener(this.onLanguageLoaded.bind(this));
44 4
    Container.moduleStateAdapter.addListener(this.onModuleLoaded.bind(this));
45 4
    Container.menuOpenStateAdapter.onChange = this.onMenuChange.bind(this);
46
  }
47
48
  componentDidMount(): void {
49
  }
50
51
  onLanguageLoaded(oldValue: ILanguageSetup, newValue: ILanguageSetup) {
52 1
    this.setState({loadedLanguage: newValue.languageCode});
53
  }
54
55
  onMenuChange(oldValue: boolean, newValue: boolean) {
56 1
    this.setState({menuOpen: newValue});
57
  }
58
59
  onModuleLoaded(oldValue: typeof React.Component | null, newValue: typeof React.Component | null) {
60 1
    this.setState({loadedPage: newValue});
61
  }
62
63
  render(): React.ReactNode {
64 7
    const model: Model = Container.applicationPresenter.present();
65
66 7
    return <ApplicationView model={model} adapter={this.adapter} />;
67
  }
68
}